package com.jrx.anytxn.param.service.system;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.system.ChannelTableReq;
import com.jrx.anytxn.param.dto.system.ChannelTableRes;
import com.jrx.anytxn.param.entity.PrChannelTable;

import java.util.List;

/**
 * 渠道表 业务接口
 *
 * @author yx
 * @date 2019/4/30
 */
public interface IChannelTableService {


    /**
     * 分页查询渠道参数信息
     *
     * @param pageSize
     * @param pageNum
     * @return TxnPage<ChannelTableRes> 渠道参数响应参数
     * @throws TxnException
     */
    TxnPage<ChannelTableRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;


    /**
     * 添加渠道参数
     *
     * @param channelTableReq 渠道请求参数
     * @return com.jrx.anytxn.param.dto.system.ChannelTableRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:32
     */
    ChannelTableRes addChannelTable(ChannelTableReq channelTableReq) throws TxnException;


    /**
     * 更新渠道参数
     *
     * @param channelTableReq 渠道请求参数
     * @return com.jrx.anytxn.param.dto.system.ChannelTableRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:32
     */
    ChannelTableRes modifyChannelTable(ChannelTableReq channelTableReq) throws TxnException;

    /**
     * 通过渠道号和租户ID删除渠道参数
     *
     * @param channelId 渠道号
     * @param tenantId  租户ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:11
     */
    Boolean removeByChannelaAndTenId(String channelId, String tenantId) throws TxnException;

    /**
     * 通过Id主键查询渠道参数
     *
     * @param channelId 渠道ID
     * @param tenantId  租户Id
     * @return com.jrx.anytxn.param.dto.system.ChannelTableRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:31
     */
    ChannelTableRes findByChannelAndTenId(String channelId, String tenantId) throws TxnException;


    List<ChannelTableRes> findAllChannel(String tenantId);

    /**
     * @Author: haopu.zheng
     * @MethodName: findChannelByChannelIdAndOrgId
     * @Description: 根据渠道及机构ID查询渠道信息
     * @Param: [channelId, organizationId]
     * @Return: com.jrx.anytxn.param.account.dto.ChannelTableRes
     * @Date: 2019/7/18
     **/

    PrChannelTable getChannelTableByChannelIdAndStatus(String status, String channelId, String tenantId) throws TxnBizException;

    /**
     * @MethodName: findChannelListByOrgId
     * @Description: 根据机构号获取有效渠道列表信息
     * @Param: [orgId]
     * @Return: java.util.List<com.jrx.anytxn.param.dto.system.ChannelTableRes>
     * @Author: fan.yang
     * @Time: 下午 14:19
     */
    List<ChannelTableRes> findChannelListByOrgId(String orgId, String tenantId) throws TxnException;


}
